(function(factory) {
	if (typeof define === "function" && define.amd) {
		define(factory);
	} else {
		factory();
	}
}(function(){
	/***
	 * @class HteOS.TileManager
	 * 磁贴特效类管理器
	 * @singleton
	 * */
	HteOS.TileManager = {
		
		tiles : {},
		/**
		 * 注册磁贴特效
		 * @param {String} code 特效类代码
		 * @param {Function} tile 特效类
		 * */
		register : function(code,tile){
			this.tiles[code] = tile;
		},
		
		/**
		 * 在页面元素中执行特效
		 * @param {String} code 特效类代码
		 * @param {Object} el 页面元素
		 * */
		start : function(tile){
			var code = tile.app.toggle;
			if(code){
				var cls = this.tiles[code];
				if(cls){
					var tile =  new cls(tile.getEl(),{});
					tile.tile = tile;
				}
			}else if(tile.app.tile){
				require([tile.app.tile],function(cls){
					if(cls){
						var instance =  new cls(tile.getEl(),{});
						tile.tile = instance;
					}
				});
				
			}
		},
		stop : function(app){
			var tile = app.tile;
			if(tile){
				tile.destroy();
			}
		}
	}
}));